home *** CD-ROM | disk | FTP | other *** search
/ The X-Philes (2nd Revision) / The X-Philes Number 1 (1995).iso / xphiles / hp48_1 / vt52_dj < prev    next >
Internet Message Format  |  1995-03-31  |  29KB

  1. From: Dave Jansen <eldorado@ecn.purdue.edu>
  2. Subject:  v05i022:  vt52_dj - vt52 Terminal Emulator v1.5, Part01/01
  3. Newsgroups: comp.sources.hp48
  4. Followup-To: comp.sys.hp48
  5. Approved: spell@seq.uncwil.edu
  6.  
  7. Checksum: 1081197545 (verify with brik -cv)
  8. Submitted-by: Dave Jansen <eldorado@ecn.purdue.edu>
  9. Posting-number: Volume 5, Issue 22
  10. Archive-name: vt52_dj/part01
  11.  
  12. BEGIN_DOC vt52.doc
  13. The following is a DEC VT52 terminal emulator for the HP48SX.  It emulates
  14. every vt52 command except for the Keypad mode (kind of redundant on the HP)
  15. and the special graphics characters (perhaps in a latter version).  The one
  16. drawback, like other communication programs for the HP48, is speed.  Because
  17. it is slow, after the recieve buffer (which is 256 characters long) fills up,
  18. it looses the rest of the characters sent.  Buffering the receive buffer will
  19. not work since at 9600 baud the buffer fills up in about 3 hundredths of a
  20. second.  Nevertheless, since fewer than 256 characters can fit on the screen
  21. at one time, it can easily display a screenful of information at a time.
  22. One method to stop loosing characters is to set the IOPAR to
  23. use XON/XOFF, any make sure that the XON/XOFF are sent through the modem
  24. and used at the receiver end.  I have tried this and it works well.
  25.  
  26. Directions
  27. 1.  VT52 - execute the program
  28. 2.  if you wish to do a file transfer, quit (press ATTN) and perform the
  29.     Kermit transfer, then just run the program again to continue.
  30.  
  31. Keyboard
  32.  
  33. The keyboard of the HP48 was redefined as the following.
  34.  
  35.     1    2    3    4    5    6
  36.  
  37.     A    B    C    D    E    F
  38. 1    a    b    c    d    e    f
  39.     ^A    ^B    ^C    ^D    ^E    ^F
  40.  
  41.     G    H    I    J    K    L
  42. 2    g    h    i    j    k    l
  43.     ^G    ^H    ^I    ^J    ^K    ^L
  44.  
  45.     M    N    O    P    Q    R
  46. 3    m    n    o    p    q    r
  47.     ^M    ^N    ^O    ^P    ^Q    ^R
  48.  
  49.     S    T    U    V    W    X
  50. 4    s    t    u    v    w    x
  51.     ^S    ^T    ^U    ^V    ^W    ^X
  52.  
  53.     ENTER    Y    Z
  54. 5    ENTER    y    z    DELETE    BACKSPACE
  55.     ENTER    ^Y    ^Z
  56.  
  57.         {    <    (    [
  58. 6    ESCAPE    7    8    9    /
  59.     \    }    >    )    ]
  60.  
  61.     CAP LOC    $    %    ^    &
  62. 7    SHIFT    4    5    6    *
  63.     QUIT    CHR(28)    CHR(29)    CHR(30)    CHR(31)
  64.  
  65.         ,    ~    `    '
  66. 8    CONTROL    1    2    3    -
  67.     BREAK    ;    @    #    "
  68.  
  69.         =    ?    _    |
  70. 9    ATTN    0    .    SPACE    +
  71.         CHR(0)    !    TAB    :
  72.  
  73. The labels above the numbered row is the left shift key.  Labels on the
  74. same line as the numbers are the default values and labels under the
  75. numbered lines are the right shift values.  The numbers are the row and
  76. column of the keyboard.  Quitting by pressing ON leaves the port open and is
  77. not necessary even to stay online.  All 128 ASCII characters are accessible
  78. from the keyboard.  I suggest getting a template and writing the above table
  79. on it for easiest use.
  80.  
  81. I have added the capability to change the font size.  This will make screen
  82. sizes of 6x22, 8x22, 10x22, 10x26, 10x33.  It will be necessary to edit the
  83. program and change the csize, ch, and cw variables to one of the following
  84. formats:
  85.  
  86. 6x22
  87. csize    3
  88. cw    6
  89. ch    10
  90.  
  91. 8x22        default value
  92. csize    2
  93. cw    6
  94. ch    8
  95.  
  96. 10x22
  97. csize    1
  98. cw    6
  99. ch    6
  100.  
  101. 10x26
  102. csize    1
  103. cw    5
  104. ch    6
  105.  
  106. 10x33
  107. csize    1
  108. cw    4
  109. ch    6
  110.  
  111. Send suggestions, comments, complains to:
  112.  
  113. ________________________________________________________________________________
  114. Dave Jansen             |  INTERNET:  eldorado@en.ecn.purdue.edu
  115. Electrical Engineering  |  BITNET:    eldorado%ea.ecn.purdue.edu@purccvm
  116. Purdue University       |  UUCP:     {purdue, pur-ee}!en.ecn.purdue.edu!eldorado
  117. END_DOC
  118.  
  119. BEGIN_RPL vt52.rpl
  120. %%HP: T(3)A(D)F(.);
  121. \<< # 0d # 0d "" ""
  122. "" "" # 0d # 0d
  123. # 0d # 0d # 0d # 0d
  124. # 131d 2 # 8d # 6d
  125. \-> col row cur spc
  126. char keymap es bs
  127. lr lc wi hi el
  128. csize ch cw
  129.   \<<
  130.     \<< PICT col row
  131. 2 \->LIST DUP2 col wi
  132. + row hi + 2 \->LIST
  133. SUB 'char' STO cur
  134. REPL
  135.     \>> \-> get
  136.     \<<
  137.       \<< 51 13 146
  138. 13 241 13 54 127 55
  139. 8 284 9 275 34 282
  140. 0 201 1 202 2 203 3
  141. 204 4 205 5 206 6
  142. 211 7 212 8 213 9
  143. 214 10 215 11 216
  144. 12 221 13 222 14
  145. 223 15 224 16 225
  146. 17 226 18 231 19
  147. 232 20 233 21 234
  148. 22 235 23 236 24
  149. 242 25 243 26 61 27
  150. 262 28 263 29 264
  151. 30 265 31
  152. "..........abcdef....ghijkl....mnopqr....stuvwx.....yz........789/......456*......123-......0. +..........ABCDEF....GHIJKL....MNOPQR....STUVWX.....YZ........{<([......$%^&......,~`'......=?_|..........ABCDEF....GHIJKL....MNOPQR....STUVWX.....YZ.......\\}>)]................;@#........!.:"
  153. 1 39
  154.         START ROT
  155. ROT CHR REPL
  156.         NEXT
  157. 'keymap' STO
  158.       \>>
  159.       \<< PICT col
  160. row 2 \->LIST char
  161. REPL
  162.         IF row lr <
  163.         THEN ch
  164. 'row' STO+
  165.         ELSE PICT
  166. DUP { # 0d # 0d }
  167. OVER # 0d ch 2
  168. \->LIST el es 2 \->LIST
  169. SUB REPL # 0d lr 2
  170. \->LIST el ch BLANK
  171. REPL
  172.         END get
  173. EVAL
  174.       \>> \-> addcntrl
  175. nl
  176.       \<<
  177.         \<< csize
  178. \->GROB PICT col row
  179. 2 \->LIST ROT REPL
  180. 'col' STO+
  181.           IF col el
  182. >
  183.           THEN # 0d
  184. 'col' STO get EVAL
  185. nl EVAL
  186.           ELSE get
  187. EVAL
  188.           END
  189.         \>>
  190.         \<< DROP
  191.           WHILE
  192. BUFLEN DROP NOT
  193.           REPEAT
  194.           END 1
  195. SRECV DROP NUM
  196.           CASE DUP
  197. 65 ==
  198.             THEN
  199. PICT col row 2
  200. \->LIST char REPL
  201.               IF
  202. row hi >
  203.               THEN
  204. 'row' ch STO-
  205.               END
  206. get EVAL
  207.             END DUP
  208. 66 ==
  209.             THEN
  210. PICT col row 2
  211. \->LIST char REPL
  212.               IF
  213. row lr <
  214.               THEN
  215. ch 'row' STO+
  216.               END
  217. get EVAL
  218.             END DUP
  219. 67 ==
  220.             THEN
  221. PICT col row 2
  222. \->LIST char REPL
  223.               IF
  224. col lc # 1d - <
  225.               THEN
  226. cw 'col' STO+
  227.               END
  228. get EVAL
  229.             END DUP
  230. 68 ==
  231.             THEN
  232. PICT col row 2
  233. \->LIST char REPL
  234.               IF
  235. col cw \>=
  236.               THEN
  237. 'col' cw STO-
  238.               END
  239. get EVAL
  240.             END DUP
  241. 72 ==
  242.             THEN
  243. PICT col row 2
  244. \->LIST char REPL
  245. # 0d 'col' STO # 0d
  246. 'row' STO get EVAL
  247.             END DUP
  248. 73 ==
  249.             THEN
  250. PICT col row 2
  251. \->LIST char REPL
  252.               IF
  253. row hi >
  254.               THEN
  255. 'row' ch STO-
  256.               ELSE
  257. PICT DUP # 0d ch 2
  258. \->LIST OVER { # 0d
  259. # 0d } el lr # 1d -
  260. 2 \->LIST SUB REPL {
  261. # 0d # 0d } el ch
  262. BLANK REPL
  263.               END
  264. get EVAL
  265.             END DUP
  266. 74 ==
  267.             THEN
  268. PICT # 0d row 2
  269. \->LIST el bs row -
  270. BLANK REPL get EVAL
  271.             END DUP
  272. 75 ==
  273.             THEN
  274. PICT col row 2
  275. \->LIST el col - ch
  276. BLANK REPL get EVAL
  277.             END DUP
  278. 89 ==
  279.             THEN
  280. PICT col row 2
  281. \->LIST char REPL
  282.               WHILE
  283. BUFLEN DROP NOT
  284.               REPEAT
  285.               END 1
  286. SRECV DROP NUM 32 -
  287. ch * 'row' STO
  288.               WHILE
  289. BUFLEN DROP NOT
  290.               REPEAT
  291.               END 1
  292. SRECV DROP NUM 32 -
  293. cw * 'col' STO get
  294. EVAL
  295.             END DUP
  296. 90 ==
  297.             THEN 27
  298. CHR "/Z" + XMIT
  299. DROP
  300.             END
  301.           END DROP
  302.         \>>
  303.         \<<
  304.           CASE DUP
  305. 127 ==
  306.             THEN
  307. PICT col row 2
  308. \->LIST spc REPL
  309.               IF
  310. col cw \>=
  311.               THEN
  312. 'col' cw STO-
  313.               ELSE
  314. lc 'col' STO 'row'
  315. ch STO-
  316.               END
  317. PICT col row 2
  318. \->LIST cur REPL
  319.             END DUP
  320. 13 ==
  321.             THEN
  322. PICT col row 2
  323. \->LIST char REPL
  324. # 0d 'col' STO get
  325. EVAL
  326.             END DUP
  327. DUP 10 \>= SWAP 12 \<=
  328. AND
  329.             THEN nl
  330. EVAL
  331.             END DUP
  332. 8 ==
  333.             THEN
  334. PICT col row 2
  335. \->LIST char REPL
  336.               IF
  337. col cw \>=
  338.               THEN
  339. 'col' cw STO-
  340.               ELSE
  341. lc 'col' STO
  342. IF row hi >
  343. THEN 'row' ch STO-
  344. ELSE PICT DUP # 0d
  345. ch 2 \->LIST OVER {
  346. # 0d # 0d } el lr
  347. # 1d - 2 \->LIST SUB
  348. REPL { # 0d # 0d }
  349. el ch BLANK REPL
  350. END
  351.               END
  352. get EVAL
  353.             END DUP
  354. 7 ==
  355.             THEN
  356. 440 .1 BEEP
  357.             END DUP
  358. 9 ==
  359.             THEN
  360. PICT col row 2
  361. \->LIST char REPL col
  362. cw 2 * / # 1d + cw
  363. 2 * *
  364.               IF
  365. DUP el >
  366.               THEN
  367. DROP # 0d 'col' STO
  368. get EVAL nl EVAL
  369.               ELSE
  370. 'col' STO get EVAL
  371.               END
  372.             END
  373.           END DROP
  374.         \>> 0 { } \->
  375. write vt52 cntrl
  376. room flags
  377.         \<< RCLF
  378. 'flags' STO
  379. addcntrl EVAL 127
  380. CHR csize \->GROB
  381. 'cur' STO 32 CHR
  382. csize \->GROB DUP
  383. 'spc' STO 'char'
  384. STO # 0d 'col' STO
  385. # 0d 'row' STO ch
  386. # 1d - 'hi' STO cw
  387. # 1d - 'wi' STO el
  388. cw - # 1d + 'lc'
  389. STO # 64d ch / ch *
  390. 'bs' STO bs # 1d -
  391. 'es' STO bs ch -
  392. 'lr' STO -40 CF
  393. OPENIO ERASE PICT {
  394. # 0d # 0d } DUP
  395. PVIEW cur REPL 7 CF
  396. 8 CF 9 CF 10 SF
  397.           WHILE 10
  398. FS?
  399.           REPEAT
  400.             IF
  401. BUFLEN DROP
  402.             THEN el
  403. col - cw / B\->R
  404. 'room' STO ""
  405.               DO 1
  406. SRECV DROP DUP NUM
  407. IF DUP 31 > SWAP
  408. 127 < AND
  409. THEN +
  410. ELSE 9 SF SWAP
  411. END
  412.               UNTIL
  413. DUP SIZE room > 9
  414. FS? OR BUFLEN DROP
  415. NOT OR
  416.               END
  417.               IF
  418. DUP SIZE DUP
  419.               THEN
  420. cw * SWAP write
  421. EVAL
  422.               ELSE
  423. DROP2
  424.               END
  425.               IF 9
  426. FS?C
  427.               THEN
  428. IF NUM DUP 27 ==
  429. THEN vt52 EVAL
  430. ELSE cntrl EVAL
  431. END
  432.               END
  433.             END
  434.             IF KEY
  435.             THEN
  436.               IF
  437. DUP DUP DUP2 10 >
  438. SWAP 54 < AND SWAP
  439. 51 \=/ AND 6 FS? AND
  440. 8 FC? AND 7 FS? OR
  441. SWAP 71 \=/ AND
  442.               THEN
  443. 95 + 7 CF
  444.               ELSE
  445. IF DUP DUP 71 \=/
  446. SWAP 81 \=/ AND 8 FS?
  447. AND
  448. THEN 190 + 8 CF
  449. END
  450.               END
  451.               IF
  452. DUP 71 ==
  453.               THEN
  454. IF 8 FS?C
  455. THEN 10 CF
  456. ELSE
  457.   IF 7 FS?C
  458.   THEN
  459.     IF 6 DUP FS?
  460.     THEN CF
  461.     ELSE SF
  462.     END
  463.   ELSE 7 SF
  464.   END
  465. END DROP
  466.               ELSE
  467. IF DUP 81 ==
  468. THEN
  469.   IF 8 FS?C
  470.   THEN SBRK
  471.   ELSE 8 SF
  472.   END DROP
  473. ELSE keymap SWAP
  474. DUP SUB XMIT DROP
  475. END
  476.               END
  477.             END
  478.           END
  479. CLOSEIO TEXT flags
  480. STOF
  481.         \>>
  482.       \>>
  483.     \>>
  484.   \>>
  485. \>>
  486. END_RPL
  487.  
  488.  
  489. BEGIN_ASC vt52.asc
  490. %%HP: ;
  491. "D9D20E1632E4A20510000000000000000000E4A20510000000000000000000C2
  492. A2050000C2A2050000C2A2050000C2A2050000E4A20510000000000000000000
  493. E4A20510000000000000000000E4A20510000000000000000000E4A205100000
  494. 00000000000000E4A20510000000000000000000E4A205100000000000000000
  495. 00E4A20510003800000000000000ED2A2E4A20510008000000000000000E4A20
  496. 5100060000000000000001C432D6E203036F6C6D6E203027F677D6E203036572
  497. 7D6E2030370736D6E204036861627D6E2060B65697D61607D6E20205637D6E20
  498. 202637D6E2020C627D6E2020C636D6E20207796D6E20208696D6E202056C6D6E
  499. 2050363796A756D6E20203686D6E20203677E1632C9432D9D20E1632634E1D6E
  500. 203036F6C6D6E203027F677ED2A2387C12ABF1D6E203036F6C6D6E2020779676
  501. BA1D6E203027F677D6E2020869676BA1ED2A2387C1C58C145632D6E204036861
  502. 62797632DCC02D6E2030365727AE8C193632B21301C432D6E2030765647E1632
  503. C9432D9D20E16323392010000000000001503392010000000000003103392020
  504. 0000000000641033920100000000000031033920200000000000142033920100
  505. 0000000000310339201000000000000450339202000000000007210339201000
  506. 000000000550C53A2339202000000000004820173A2339202000000000005720
  507. 3392010000000000004303392020000000000028204B2A233920200000000000
  508. 10209C2A2339202000000000002020ED2A23392020000000000030203F2A2339
  509. 202000000000004020803A2339202000000000005020D13A2339202000000000
  510. 006020233A2339202000000000001120743A2339202000000000002120C53A23
  511. 39202000000000003120173A2339202000000000004120339201000000000000
  512. 0103392020000000000051203392010000000000001103392020000000000061
  513. 2033920100000000000021033920200000000000122033920100000000000031
  514. 0339202000000000002220339201000000000000410339202000000000003220
  515. 3392010000000000005103392020000000000042203392010000000000006103
  516. 3920200000000000522033920100000000000071033920200000000000622033
  517. 9201000000000000810339202000000000001320339201000000000000910339
  518. 2020000000000023203392010000000000000203392020000000000033203392
  519. 0100000000000012033920200000000000432033920100000000000022033920
  520. 2000000000005320339201000000000000320339202000000000006320339201
  521. 0000000000004203392020000000000024203392010000000000005203392020
  522. 0000000000342033920100000000000062033920100000000000016033920100
  523. 0000000000720339202000000000002620339201000000000000820339202000
  524. 0000000036203392010000000000009203392020000000000046203392010000
  525. 00000000030339202000000000005620339201000000000000130C2A20F3200E
  526. 2E2E2E2E2E2E2E2E2E2162636465666E2E2E2E2768696A6B6C6E2E2E2E2D6E6F
  527. 6071727E2E2E2E2374757677787E2E2E2E2E297A7E2E2E2E2E2E2E2E2738393F
  528. 2E2E2E2E2E2E2435363A2E2E2E2E2E2E2132333D2E2E2E2E2E2E203E202B2E2E
  529. 2E2E2E2E2E2E2E2E2142434445464E2E2E2E2748494A4B4C4E2E2E2E2D4E4F40
  530. 51525E2E2E2E2354555657585E2E2E2E2E295A5E2E2E2E2E2E2E2E2B7C382B5E
  531. 2E2E2E2E2E24252E562E2E2E2E2E2E2C2E70672E2E2E2E2E2E2D3F3F5C7E2E2E
  532. 2E2E2E2E2E2E2E2142434445464E2E2E2E2748494A4B4C4E2E2E2E2D4E4F4051
  533. 525E2E2E2E2354555657585E2E2E2E2E295A5E2E2E2E2E2E2E2C5D7E392D5E2E
  534. 2E2E2E2E2E2E2E2E2E2E2E2E2E2E2B30432E2E2E2E2E2E2E2E212E2A39C2A233
  535. 920100000000000093030132E0CF1E0CF166BC1AE8C1C423245632D6E2060B65
  536. 697D6160797632DCC0293632B2130C9432D9D20E1632634E1D6E203036F6C6D6
  537. E203027F677ED2A2387C1D6E204036861627AE8C13CE22D6E203027F677D6E20
  538. 20C627EBBE1AFE22D9D20D6E2020368645632D6E203027F67797632B4402B213
  539. 05BF22D9D20634E178BF147A20E4A20510000000000000000000E4A205100000
  540. 00000000000000B213092CF1E4A20510000000000000000000D6E20203686ED2
  541. A2387C1D6E202056C6D6E20205637ED2A2387C1C58C1AE8C1E4A205100000000
  542. 00000000000D6E2020C627ED2A2387C1D6E202056C6D6E20203686614E1AE8C1
  543. B21305DF22D6E2030765647EB3A193632B21301C432D6E208016464636E64727
  544. C6D6E2020E6C6E1632C9432D9D20E1632D6E2050363796A756DA5E1634E1D6E2
  545. 03036F6C6D6E203027F677ED2A2387C1E0CF1AE8C145632D6E203036F6C69763
  546. 2B44023CE22D6E203036F6C6D6E202056C6D5CE1AFE22D9D20E4A20510000000
  547. 00000000000045632D6E203036F6C697632DCC02D6E2030765647EB3A1D6E202
  548. 0E6C6EB3A1B21305BF22D9D20D6E2030765647EB3A1B21305DF2293632B2130C
  549. 9432D9D20E16328DBF133032780228DBF1F88E1D5032D9D20B2130496329C2A2
  550. 59E128DBF164BC1D8732D9D2078BF1339201000000000000560279E18A732D9D
  551. 20634E1D6E203036F6C6D6E203027F677ED2A2387C1D6E204036861627AE8C13
  552. CE22D6E203027F677D6E20208696D5CE1AFE22D9D2045632D6E203027F677976
  553. 32D6E2020368683502B21305DF22D6E2030765647EB3A1B21305DF2278BF1339
  554. 201000000000000660279E18A732D9D20634E1D6E203036F6C6D6E203027F677
  555. ED2A2387C1D6E204036861627AE8C13CE22D6E203027F677D6E2020C627EBBE1
  556. AFE22D9D20D6E2020368645632D6E203027F67797632B4402B21305DF22D6E20
  557. 30765647EB3A1B21305DF2278BF1339201000000000000760279E18A732D9D20
  558. 634E1D6E203036F6C6D6E203027F677ED2A2387C1D6E204036861627AE8C13CE
  559. 22D6E203036F6C6D6E2020C636E4A2051000100000000000000090DA1EBBE1AF
  560. E22D9D20D6E2020367745632D6E203036F6C697632B4402B21305DF22D6E2030
  561. 765647EB3A1B21305DF2278BF1339201000000000000860279E18A732D9D2063
  562. 4E1D6E203036F6C6D6E203027F677ED2A2387C1D6E204036861627AE8C13CE22
  563. D6E203036F6C6D6E20203677B9DE1AFE22D9D2045632D6E203036F6C697632D6
  564. E2020367783502B21305DF22D6E2030765647EB3A1B21305DF2278BF13392010
  565. 00000000000270279E18A732D9D20634E1D6E203036F6C6D6E203027F677ED2A
  566. 2387C1D6E204036861627AE8C1E4A2051000000000000000000045632D6E2030
  567. 36F6C697632DCC02E4A2051000000000000000000045632D6E203027F6779763
  568. 2DCC02D6E2030765647EB3A1B21305DF2278BF1339201000000000000370279E
  569. 18A732D9D20634E1D6E203036F6C6D6E203027F677ED2A2387C1D6E204036861
  570. 627AE8C13CE22D6E203027F677D6E20208696D5CE1AFE22D9D2045632D6E2030
  571. 27F67797632D6E2020368683502B21305BF22D9D20634E178BF1E4A205100000
  572. 00000000000000D6E20203686ED2A2387C192CF147A20E4A2051000000000000
  573. 0000000E4A20510000000000000000000B2130D6E202056C6D6E2020C627E4A2
  574. 051000100000000000000090DA1ED2A2387C1C58C1AE8C147A20E4A205100000
  575. 00000000000000E4A20510000000000000000000B2130D6E202056C6D6E20203
  576. 686614E1AE8C1B21305DF22D6E2030765647EB3A1B21305DF2278BF133920100
  577. 0000000000470279E18A732D9D20634E1E4A20510000000000000000000D6E20
  578. 3027F677ED2A2387C1D6E202056C6D6E20202637D6E203027F67790DA1614E1A
  579. E8C1D6E2030765647EB3A1B21305DF2278BF1339201000000000000570279E18
  580. A732D9D20634E1D6E203036F6C6D6E203027F677ED2A2387C1D6E202056C6D6E
  581. 203036F6C690DA1D6E20203686614E1AE8C1D6E2030765647EB3A1B21305DF22
  582. 78BF1339201000000000000980279E18A732D9D20634E1D6E203036F6C6D6E20
  583. 3027F677ED2A2387C1D6E204036861627AE8C133032780228DBF1F88E1D5032D
  584. 9D20B2130496329C2A259E128DBF164BC133920100000000000023090DA1D6E2
  585. 0203686EEDA145632D6E203027F67797632DCC0233032780228DBF1F88E1D503
  586. 2D9D20B2130496329C2A259E128DBF164BC133920100000000000023090DA1D6
  587. E20203677EEDA145632D6E203036F6C697632DCC02D6E2030765647EB3A1B213
  588. 05DF2278BF1339201000000000000090279E18A732D9D2033920100000000000
  589. 072066BC1C2A2090000F2A576BA157E128DBF1B21305DF22B21305DF228DBF19
  590. 3632B2130C9432D9D20E1632D8732D9D2078BF1339202000000000007210279E
  591. 18A732D9D20634E1D6E203036F6C6D6E203027F677ED2A2387C1D6E203037073
  592. 6AE8C13CE22D6E203036F6C6D6E20203677B9DE1AFE22D9D2045632D6E203036
  593. F6C697632D6E2020367783502B21305BF22D9D20D6E2020C63645632D6E20303
  594. 6F6C697632DCC0245632D6E203027F67797632D6E2020368683502B21305DF22
  595. 634E1D6E203036F6C6D6E203027F677ED2A2387C1D6E2030365727AE8C1B2130
  596. 5DF2278BF1339201000000000000310279E18A732D9D20634E1D6E203036F6C6
  597. D6E203027F677ED2A2387C1D6E204036861627AE8C1E4A205100000000000000
  598. 0000045632D6E203036F6C697632DCC02D6E2030765647EB3A1B21305DF2278B
  599. F178BF1339201000000000000010B9DE1DBBF1339201000000000000210CFCE1
  600. 387E18A732D9D20D6E2020E6C6EB3A1B21305DF2278BF1C53A2279E18A732D9D
  601. 20634E1D6E203036F6C6D6E203027F677ED2A2387C1D6E204036861627AE8C13
  602. CE22D6E203036F6C6D6E20203677B9DE1AFE22D9D2045632D6E203036F6C6976
  603. 32D6E2020367783502B21305BF22D9D20D6E2020C63645632D6E203036F6C697
  604. 632DCC023CE22D6E203027F677D6E20208696D5CE1AFE22D9D2045632D6E2030
  605. 27F67797632D6E2020368683502B21305BF22D9D20634E178BF1E4A205100000
  606. 00000000000000D6E20203686ED2A2387C192CF147A20E4A2051000000000000
  607. 0000000E4A20510000000000000000000B2130D6E202056C6D6E2020C627E4A2
  608. 051000100000000000000090DA1ED2A2387C1C58C1AE8C147A20E4A205100000
  609. 00000000000000E4A20510000000000000000000B2130D6E202056C6D6E20203
  610. 686614E1AE8C1B21305DF22B21305DF22D6E2030765647EB3A1B21305DF2278B
  611. F1743A2279E18A732D9D20339202000000000000440339209990000000000010
  612. 4C5A1B21305DF2278BF1173A2279E18A732D9D20634E1D6E203036F6C6D6E203
  613. 027F677ED2A2387C1D6E204036861627AE8C1D6E203036F6C6D6E20203677ED2
  614. A2EEDA150FA1E4A2051000100000000000000076BA1D6E20203677ED2A2EEDA1
  615. EEDA13CE2278BF1D6E202056C6D5CE1AFE22D9D208DBF1E4A205100000000000
  616. 0000000045632D6E203036F6C697632DCC02D6E2030765647EB3A1D6E2020E6C
  617. 6EB3A1B21305BF22D9D2045632D6E203036F6C697632DCC02D6E2030765647EB
  618. 3A1B21305DF22B21305DF22B21305DF228DBF193632B21304B2A247A20B21301
  619. C432D6E20507727964756D6E204067475323D6E205036E64727C6D6E204027F6
  620. F6D6D6E205066C6167637E1632916C145632D6E205066C616763797632DCC02D
  621. 6E208016464636E64727C6EB3A133920200000000000721066BC1D6E20503637
  622. 96A756DA5E145632D6E203036572797632DCC0233920100000000000023066BC
  623. 1D6E2050363796A756DA5E178BF145632D6E203037073697632DCC0245632D6E
  624. 20403686162797632DCC02E4A2051000000000000000000045632D6E203036F6
  625. C697632DCC02E4A2051000000000000000000045632D6E203027F67797632DCC
  626. 02D6E20203686E4A2051000100000000000000090DA145632D6E202086969763
  627. 2DCC02D6E20203677E4A2051000100000000000000090DA145632D6E20207796
  628. 97632DCC02D6E202056C6D6E2020367790DA1E4A205100010000000000000007
  629. 6BA145632D6E2020C63697632DCC02E4A20510000400000000000000D6E20203
  630. 68650FA1D6E20203686EEDA145632D6E2020263797632DCC02D6E20202637E4A
  631. 2051000100000000000000090DA145632D6E2020563797632DCC02D6E2020263
  632. 7D6E2020368690DA145632D6E2020C62797632DCC02339201000000000000049
  633. 5D2C15BE12F52E1634E147A20E4A20510000000000000000000E4A2051000000
  634. 0000000000000B213078BF10F2E1D6E2030365727AE8C1743A25D2C1C53A25D2
  635. C1173A25D2C1339201000000000000010472C133032339201000000000000010
  636. 313C1D5032D9D203CE22780228DBF1AFE22D9D20D6E202056C6D6E203036F6C6
  637. 90DA1D6E2020367750FA1BB69145632D6E204027F6F6D697632DCC02C2A20500
  638. 003C0329C2A259E128DBF178BF164BC13CE2278BF1339201000000000000130D
  639. 5CE1DBBF1339202000000000007210EBBE1387E1AFE2276BA15BF22D9D20173A
  640. 2472C1DBBF1B21305DF22DE03278BF18B9C1D6E204027F6F6D6D5CE1173A2313
  641. C1908E1780228DBF1F88E1908E19B6323CE2278BF18B9C178BF1AFE22D9D20D6
  642. E20203677EEDA1DBBF1D6E20507727964756EB3A1B21305BF223FBF15DF223CE
  643. 22173A21A4C1AFE22D9D203CE2264BC178BF1339201000000000000720279E1A
  644. FE22D9D20D6E204067475323EB3A1B21305BF22D9D20D6E205036E64727C6EB3
  645. A1B21305DF22B21305DF22B21305DF223CE22378A1AFE22D9D203CE2278BF178
  646. BF12ABF1339201000000000000010D5CE1DBBF1339201000000000000450EBBE
  647. 1387E1DBBF1339201000000000000150D9AE1387E1233A2313C1387E1C53A206
  648. 3C1387E1743A2313C1908E1DBBF1339201000000000000170D9AE1387E1AFE22
  649. D9D2033920100000000000059076BA1743A25D2C1B21305BF22D9D203CE2278B
  650. F178BF1339201000000000000170D9AE1DBBF1339201000000000000180D9AE1
  651. 387E1C53A2313C1387E1AFE22D9D2033920200000000000091076BA1C53A25D2
  652. C1B21305DF22B21305DF223CE2278BF1339201000000000000170279E1AFE22D
  653. 9D203CE22C53A21A4C1AFE22D9D203392010000000000000105D2C1B21305BF2
  654. 2D9D203CE22743A21A4C1AFE22D9D203CE22233A278BF1313C1AFE225D2C15BF
  655. 22472C15DF22B21305BF22D9D20743A2472C1B21305DF22B21305DF228DBF1B2
  656. 1305BF22D9D203CE2278BF1339201000000000000180279E1AFE22D9D203CE22
  657. C53A21A4C1AFE222C0225BF22D9D20C53A2472C1B21305DF228DBF1B21305BF2
  658. 2D9D20D6E2060B65697D61607DBBF178BF1C58C157E128DBF1B21305DF22B213
  659. 05DF22B21305DF22B2130496325DE12606E1D6E205066C6167637F76C1EF532E
  660. F532EF532EF53293632B213031B5"
  661. END_ASC
  662.  
  663.  
  664. BYTES: #5B13h 5420
  665.  
  666. BEGIN_UU vt52.uue
  667. begin 644 vt52
  668. M2%!(4#0X+46=+>!A(TXJ4`$```````````!.*E`!````````````+"I0```L
  669. M*E```"PJ4```+"I0``!.*E`!````````````3BI0`0```````````$XJ4`$`
  670. M``````````!.*E`!````````````3BI0`0```````````$XJ4`$`````````
  671. M``!.*E`!`(,`````````WJ+BI`(5`(``````````X*0"%0!@`````````!!,
  672. M(VTN,##VQM;F`@-R;W=M+C`P5B?7Y@(#<W!C;2Y`,(86)M?F`@9K97EM87!M
  673. M+B!0-M?F`@)B<VTN(,`FU^8"`FQC;2X@<)?6Y@(":&EM+B!0QM;F`@5C<VEZ
  674. M96TN(#"&UN8"`F-W'C;"22.=+>!A(S;DT>8"`V-O;&TN,"#W=N<M*H/'(;H?
  675. M;2XP,/;&UN8"`G=I9ZO1Y@(#<F]W;2X@@)9VMAK>HC)X'%S(064C;2Y`,(86
  676. M)I=G(\T,TN8"`V-U<NK(D6,C*S$03"-M+C!P5D;G82.<--+9`AXV,I,"`0``
  677. M````$`4S*1`````````3,),"`@``````1@$S*1`````````3,),"`@``````
  678. M00(S*1`````````3,),"`0``````0`4S*2```````'`2,),"`0``````4`5<
  679. MHS*3`@(``````(0"<:,RDP("``````!U`C,I$````````#0PDP("``````""
  680. M`K2B,I,"`@```````0+)HC*3`@(```````("WJ(RDP("```````#`O.B,I,"
  681. M`@``````!`((HS*3`@(```````4"':,RDP("```````&`C*C,I,"`@``````
  682. M$0)'HS*3`@(``````!("7*,RDP("```````3`G&C,I,"`@``````%`(S*1``
  683. M```````0,),"`@``````%0(S*1`````````1,),"`@``````%@(S*1``````
  684. M```2,),"`@``````(0(S*1`````````3,),"`@``````(@(S*1`````````4
  685. M,),"`@``````(P(S*1`````````5,),"`@``````)`(S*1`````````6,),"
  686. M`@``````)0(S*1`````````7,),"`@``````)@(S*1`````````8,),"`@``
  687. M````,0(S*1`````````9,),"`@``````,@(S*1`````````@,),"`@``````
  688. M,P(S*1`````````A,),"`@``````-`(S*1`````````B,),"`@``````-0(S
  689. M*1`````````C,),"`@``````-@(S*1`````````D,),"`@``````0@(S*1``
  690. M```````E,),"`@``````0P(S*1`````````F,),"`0``````$`8S*1``````
  691. M```G,),"`@``````8@(S*1`````````H,),"`@``````8P(S*1`````````I
  692. M,),"`@``````9`(S*1`````````P,),"`@``````90(S*1`````````QP*("
  693. M/P+@XN+BXN+BXN+B$B8V1E9FYN+BXG*&EJ:VQN;BXN+2YO8&%R?GXN+B,D=7
  694. M9W>'Y^+BXN*2I^?BXN+BXN+B<H.3\^+BXN+BXD)38Z/BXN+BXN(2(S/3XN+B
  695. MXN+B`N,"LN+BXN+BXN+BXN(2)#1$5&3DXN+B<H24I+3$Y.+BXM+D]`05)>7B
  696. MXN(R155E=87EXN+BXI*EY>+BXN+BXN*RQX.RY>+BXN+B0E+B9>+BXN+BXL+B
  697. M!W;BXN+BXN+2\_/%Y^+BXN+BXN+BXA(D-$149.3BXN)RA)2DM,3DXN+BTN3T
  698. M!!4EY>+BXC)%565UA>7BXN+BDJ7EXN+BXN+BPM7GD]+EXN+BXN+BXN+BXN+B
  699. MXN+BL@,TXN+BXN+BXN(2XJ*3+"HS*1`````````Y,!`C#OSAP!]FRZ&.'$PR
  700. M0F4C;2Y@L%:6UQ8&EV<CS0R28R,K,<!)(YTMX&$C-N31Y@(#8V]L;2XP(/=V
  701. MYRTJ@\?1Y@($8VAA<NK(,>PB;2XP(/=VU^8"`FQRONNA[R*=+=#F`@)C:%0V
  702. MTN8"`W)O=WDVLD0@*S%0^R*=+6!#'H?[0:<"3BI0`0```````````$XJ4`$`
  703. M```````````K,9#"'TXJ4`$```````````!M+B`PAN8M*H/'T>8"`F5L;2X@
  704. M4#;G+2J#Q\&%'.K(X:0"%0```````````-#F`@)L<MZB,G@<;2X@4,;6Y@("
  705. M8V@6Y*&.'"LQ4/TB;2XP<%9&YSL:.3:R$@/!--+F`@AA9&1C;G1R;&TN(.#&
  706. MYF$CG#32V0(>-M+F`@5C<VEZ9:WE84,>;2XP,/;&UN8"`W)O=]ZB,G@<#ORA
  707. MCAQ4-M+F`@-C;VQY-K)$(,,NTN8"`V-O;&TN(%#&UL4>^B[2V0).*E`!````
  708. M````````5#;2Y@(#8V]L>3;2S"!M+C!P5D;G.QIM+B#@QN8[&BLQ4/LBG2W0
  709. MY@(#9V5TOJ.Q$@/5+Y)C(RLQP$DCG2W@82/8^S$#(X<@@KT?C^C1!2.=+;`2
  710. M`Y0VDBPJE1Z"O1]&R]%X(YTM<+@?,RD0````````92"7'J@WTMD"-N31Y@(#
  711. M8V]L;2XP(/=VYRTJ@\?1Y@($8VAA<NK(,>PB;2XP(/=VU^8"`FAI7>RA[R*=
  712. M+4!E(VTN,"#W=I=G(VTN(#"&AE,@*S%0_2)M+C!P5D;G.QHK,5#](H?[,9,"
  713. M`0``````8`9RZ8%Z(YTM8$,>;2XP,/;&UN8"`W)O=]ZB,G@<;2Y`,(86)J>.
  714. M',,NTN8"`W)O=VTN(,`FY[L>^B[2V0)M+B`PAD9E(VTN,"#W=I=G(TL$LA(#
  715. MU2_2Y@(#9V5TOJ.Q$@/5+W*X'S,I$````````&<@EQZH-]+9`C;DT>8"`V-O
  716. M;&TN,"#W=N<M*H/'T>8"!&-H87+JR#'L(FTN,##VQM;F`@)L8TXJ4`$``0``
  717. M```````)K>&['OHNTMD";2X@,'9'92-M+C`P]L:69R-+!+(2`]4OTN8"`V=E
  718. M=+ZCL1(#U2]RN!\S*1````````!H()<>J#?2V0(VY-'F`@-C;VQM+C`@]W;G
  719. M+2J#Q]'F`@1C:&%RZL@Q[")M+C`P]L;6Y@("8W>;[:'O(ITM0&4C;2XP,/;&
  720. MEF<C;2X@,':'4R`K,5#](FTN,'!61N<[&BLQ4/TBA_LQDP(!```````@!W+I
  721. M@7HCG2U@0QYM+C`P]L;6Y@(#<F]WWJ(R>!QM+D`PAA8FIXX<3BI0`0``````
  722. M`````%0VTN8"`V-O;'DVTLP@3BI0`0```````````%0VTN8"`W)O=WDVTLP@
  723. M;2XP<%9&YSL:*S%0_2*'^S&3`@$``````#`'<NF!>B.=+6!#'FTN,##VQM;F
  724. M`@-R;W?>HC)X'&TN0#"&%B:GCAS#+M+F`@-R;W=M+B"`EM;%'OHNTMD"5#;2
  725. MY@(#<F]W>3;2Y@("8V@X!;(2`[4OTMD"-N1QN!].*E`!````````````;2X@
  726. M,(;F+2J#QY'"'W0JX*0"%0```````````."D`A4```````````"P$@-M+B!0
  727. MQM;F`@)L<DXJ4`$``0`````````)K>$M*H/'P84<ZLA!IP).*E`!````````
  728. M````3BI0`0```````````"LQT.8"`F5L;2X@,(9F01[JR+$2`]4OTN8"`V=E
  729. M=+ZCL1(#U2]RN!\S*1````````!T()<>J#?2V0(VY.&D`A4```````````#0
  730. MY@(#<F]WWJ(R>!QM+B!0QM;F`@)B<VTN,"#W=I?0&A;DH8X<;2XP<%9&YSL:
  731. M*S%0_2*'^S&3`@$``````%`'<NF!>B.=+6!#'FTN,##VQM;F`@-R;W?>HC)X
  732. M'&TN(%#&UN8"`V-O;`FMT>8"`F-H%N2ACAQM+C!P5D;G.QHK,5#](H?[,9,"
  733. M`0``````D`ARZ8%Z(YTM8$,>;2XP,/;&UN8"`W)O=]ZB,G@<;2Y`,(86)J>.
  734. M'#,P<@@BV/OQB!Y=,-+9`BLQ0&DCR:)2Z2'8^V&T'#,I$````````#*0T!IM
  735. M+B`PAN;>&E0VTN8"`W)O=WDVTLP@,S!R""+8^_&('ETPTMD"*S%`:2/)HE+I
  736. M(=C[8;0<,RD0````````,I#0&FTN(#!VY]X:5#;2Y@(#8V]L>3;2S"!M+C!P
  737. M5D;G.QHK,5#](H?[,9,"`0````````ERZ8%Z(YTM,),"`0``````<`)FR\&B
  738. M`@D`\*)UMAIU'H*]'RLQ4/TB*S%0_2+8^Y%C(RLQP$DCG2W@82.--]+9`H?[
  739. M,9,"`@``````)P%RZ8%Z(YTM8$,>;2XP,/;&UN8"`W)O=]ZB,G@<;2XP,`<W
  740. MIHX<PR[2Y@(#8V]L;2X@,':WV1[Z+M+9`E0VTN8"`V-O;'DVTN8"`F-W.`6R
  741. M$@.U+]+9`FTN(,`V1F4C;2XP,/;&EF<CS0Q"92-M+C`@]W:79R-M+B`PAH93
  742. M("LQ4/TB-N31Y@(#8V]L;2XP(/=VYRTJ@\?1Y@(#8W5RZLBQ$@/5+W*X'S,I
  743. M$````````!,@EQZH-]+9`C;DT>8"`V-O;&TN,"#W=N<M*H/'T>8"!&-H87+J
  744. MR.&D`A4```````````!`92-M+C`P]L:69R/-#-+F`@-G972^H[$2`]4O<K@?
  745. MA_LQDP(!`````````9OMT;L?,RD0````````$L#/'H/G@7HCG2W0Y@(";FR^
  746. MH[$2`]4O<K@?7*,BEQZH-]+9`C;DT>8"`V-O;&TN,"#W=N<M*H/'T>8"!&-H
  747. M87+JR#'L(FTN,##VQM;F`@)C=YOMH>\BG2U`92-M+C`P]L:69R-M+B`P=H=3
  748. M("LQ4/LBG2W0Y@(";&-4-M+F`@-C;VQY-M+,(,,NTN8"`W)O=VTN(("6UL4>
  749. M^B[2V0)4-M+F`@-R;W=Y-M+F`@)C:#@%LA(#M2_2V0(VY'&X'TXJ4`$`````
  750. M``````!M+B`PAN8M*H/'D<(?="K@I`(5````````````X*0"%0``````````
  751. M`+`2`VTN(%#&UN8"`FQR3BI0`0`!``````````FMX2TJ@\?!A1SJR$&G`DXJ
  752. M4`$```````````!.*E`!````````````*S'0Y@("96QM+B`PAF9!'NK(L1(#
  753. MU2^R$@/5+]+F`@-G972^H[$2`]4O<K@?1Z,BEQZH-]+9`C,I(````````$0P
  754. MDP*9"0```````<2EL1(#U2]RN!]QHR*7'J@WTMD"-N31Y@(#8V]L;2XP(/=V
  755. MYRTJ@\?1Y@($8VAA<NK(T>8"`V-O;&TN(#!VYRTJ[JU1\!I.*E`!``$`````
  756. M````9ZO1Y@("8W?>HN+>&NZM,>PBA_O1Y@("96Q=[*'O(ITM@+T?3BI0`0``
  757. M`````````%0VTN8"`V-O;'DVTLP@;2XP<%9&YSL:;2X@X,;F.QHK,5#[(ITM
  758. M0&4C;2XP,/;&EF<CS0S2Y@(#9V5TOJ.Q$@/5+[(2`]4OLA(#U2^"O1\Y-K(2
  759. M`[2B0J<"*S$03"-M+E!P)Y=&5];F`@1V=#4R;2Y0,.9&)\?6Y@($<F]O;6TN
  760. M4&#&%G8VYV$C&<9!92-M+E!@QA9V-I=G(\T,TN8""&%D9&-N=')LOJ,QDP("
  761. M```````G`6;+T>8"!6-S:7IEK>5!92-M+C`P5B>79R/-##*3`@$``````"`#
  762. M9LO1Y@(%8W-I>F6MY7&X'U0VTN8"`W-P8WDVTLP@5#;2Y@($8VAA<GDVTLP@
  763. M3BI0`0```````````%0VTN8"`V-O;'DVTLP@3BI0`0```````````%0VTN8"
  764. M`W)O=WDVTLP@;2X@,(;FI`(5`!``````````D-`:5#;2Y@(":&EY-M+,(&TN
  765. M(#!VYZ0"%0`0`````````)#0&E0VTN8"`G=I>3;2S"!M+B!0QM;F`@)C=PFM
  766. MX:0"%0`0`````````'"V&E0VTN8"`FQC>3;2S"!.*E`!`$``````````;2X@
  767. M,(96\!IM+B`PAN;>&E0VTN8"`F)S>3;2S"!M+B`@-N>D`A4`$`````````"0
  768. MT!I4-M+F`@)E<WDVTLP@;2X@(#;7Y@("8V@)K4%E(VTN(,`FEV<CS0PRDP(!
  769. M````````E-7"4>LA7^)A0QYT*N"D`A4```````````#@I`(5````````````
  770. ML!(#A_L!+QYM+C`P5B>GCAQ'HU(M'%RC4BT<<:-2+1PS*1`````````00"<<
  771. M,S`RDP(!`````````1/#T04CG2TP["*'((*]'_HNTMD";2X@4,;6Y@(#8V]L
  772. M":W1Y@("8W<%K[%K&50VTN8"!')O;VUY-M+,("PJ4```PS"2+"J5'H*]'X?[
  773. M8;0<PRYRN!\S*1`````````QT,4>O?LQDP("```````G`;[K,7@>^BYRMAJU
  774. M+]+9`G&C0B<<O?NQ$@/5+](.(X?[@9L<;2Y`(/?VUM;%'G&C,C$<">AQ""+8
  775. M^_&('@GHD6LCPRYRN!^XR7&X'_HNTMD";2X@,';GWAJ]^]'F`@5W<FET9;ZC
  776. ML1(#M2\ROQ_5+S+L(G&C$DH<^B[2V0+#+F*T'(?[,9,"`0``````<`)RZ:'O
  777. M(ITMT.8"!'9T-3*^H[$2`[4OTMD";2Y0,.9&)\?F.QHK,5#](BLQ4/TB*S%0
  778. M_2+#+C*'&OHNTMD"PRYRN!^'^R&Z'S,I$````````!#0Q1Z]^S&3`@$`````
  779. M`$`%ONLQ>!Z]^S&3`@$``````!`%G>HQ>!XRHS(Q'(/GP34J8,,Q>!Y'HS(Q
  780. M'`GHT;L?,RD0````````<="I'H/GH>\BG2TPDP(!``````!0"6>K<30JU<*Q
  781. M$@.U+]+9`L,N<K@?A_LQDP(!```````0!YWJT;L?,RD0````````@="I'H/G
  782. MP34J$\,Q>![Z+M+9`C,I(````````!EPMAI<HU(M'"LQ4/TB*S%0_2+#+G*X
  783. M'S,I$````````'$@EQ[Z+M+9`L,NPC4JH<2A[R*=+3"3`@$````````!U<*Q
  784. M$@.U+]+9`L,N<C0JH<2A[R*=+3#L(C*C<K@?$\.A[R+5PE'[(G3"4?TB*S%0
  785. M^R*=+7`T*G3"L1(#U2^R$@/5+X*]'RLQ4/LBG2TP["*'^S&3`@$``````!`(
  786. M<NFA[R*=+3#L(ERC$DH<^BXB#"*U+]+9`ERC0B<<*S%0_2+8^[$2`[4OTMD"
  787. M;2Y@L%:6UQ8&U[L?A_O!A1QU'H*]'RLQ4/TB*S%0_2(K,5#](BLQ0&DCU1YB
  788. <8!YM+E!@QA9V-O=G'/XUXE\C_C7B7R,Y-K(2`[(2
  789. `
  790. end
  791. sum -r/size 58226/7503 section (from "begin" to "end")
  792. sum -r/size 23883/5428 entire input file
  793. END_UU
  794.